package com.lemon.system.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.lemon.common.security.utils.SecurityUtils;
import com.lemon.system.api.domain.SysDictData;
import com.lemon.system.mapper.SysDictDataMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.lemon.common.security.utils.OptEntityUtils;
import com.lemon.common.security.service.BaseServiceImpl;
import com.lemon.system.mapper.BiElementConfigMapper;
import com.lemon.system.domain.BiElementConfig;
import com.lemon.system.service.IBiElementConfigService;

/**
 * 包名称：com.lemon.system.service.impl
 * 类名称：BiElementConfigServiceImpl
 * 类描述：要素配置Service业务层处理
 * 创建人：@author huangpeng
 * 创建时间：2023-03-12
 */
@Service
public class BiElementConfigServiceImpl extends BaseServiceImpl<BiElementConfig> implements IBiElementConfigService {

    @Autowired
    private BiElementConfigMapper biElementConfigMapper;

    @Autowired
    private SysDictDataMapper dictDataMapper;

    @Override
    public List<BiElementConfig> selectBiElementConfigList(BiElementConfig biElementConfig) {
        return biElementConfigMapper.selectBiElementConfigList(biElementConfig);
    }

    @Override
    public List<BiElementConfig> queryByFunctionCodes(String functionCodes) {
        List<BiElementConfig> elementConfigList = new ArrayList<>();
        if (StringUtils.isNotEmpty(functionCodes)) {
            elementConfigList = biElementConfigMapper.queryByFunctionCodes(functionCodes.split(","));
            for (BiElementConfig elementConfig : elementConfigList) {
                if (StringUtils.isNotEmpty(elementConfig.getDictCode())) {
                    List<SysDictData> dictDataList = dictDataMapper.selectDictDataByType(elementConfig.getDictCode());
                    elementConfig.setDictOptions(dictDataList);
                }
                if (elementConfig.getElementType().equals("password")) {
                    elementConfig.setElementValue(SecurityUtils.encryptPassword(elementConfig.getElementValue()));
                }
            }
        }
        return elementConfigList;
    }
}
